using UnityEngine;

public class TS_Player_Script : MonoBehaviour
{
    // 获取红色球
    public GameObject redBall;
    // 旋转速度，当变量为public时可以显示在inspector面板上
    public float rotateSpeed = 3f;
    
    private void Awake()
    {
        // 当前对象的世界坐标
        Debug.Log("position:"+ transform.position);
        // 当前对象相对于父对象的坐标
        Debug.Log("localPosition:"+transform.localPosition);
        
        // 当前对象的世界旋转[欧拉角]
        Debug.Log("eulerAngles:" + transform.eulerAngles);
        // 当前对象相对于父对象的旋转[欧拉角]
        Debug.Log("localEulerAngles:" + transform.localEulerAngles);
        
        // 当前对象的世界旋转[四元数]
        Debug.Log("rotation:" + transform.rotation);
        // 当前对象相对于父对象的旋转[四元数]
        Debug.Log("localRotation:" + transform.localRotation);
        
        // 当前对象的本地缩放
        Debug.Log("scale:" + transform.localScale);
    }

    private void Start()
    {
        // 获取父对象，如果没有父对象则为null
        Debug.Log(transform.parent);
        // 设置父对象
        transform.SetParent(Camera.main.transform);
        // 获取根对象，如果没有父对象则root为自身
        Debug.Log(transform.root);

        #region 获取子对象
        // 获取当前对象的子对象个数
        Debug.Log(transform.childCount);
        // 获取当前对象的某个子对象
        Transform child0 = transform.GetChild(0);
        Debug.Log("child0: " + child0);
        // 遍历所有子对象
        // for (int i = 0; i < transform.childCount; i++)
        // {
        // Debug.Log("Child"+i+": "+transform.GetChild(i));
        // }
        // 从子对象中找某格对象(可以找到非激活的对象)
        Transform childCube = transform.Find("Cube");
        Transform grandsonQuad = transform.Find("Cube/Quad");// XPath
        Debug.Log(grandsonQuad);
        #endregion
        
    }

    private void FixedUpdate()
    {
        // 位置移动方法
        // transform.Translate(new Vector3(0.03f, 0, 0));
        // transform.position += new Vector3(0.03f, 0, 0);
        
        // 旋转方法
        // 自转
        // transform.Rotate(new Vector3(0, 0, 2));
        // transform.eulerAngles += new Vector3(0, 0, 2);
        // 绕父对象公转
        // transform.RotateAround(
        //     new Vector3(1, 1, 1),// 环绕的点
        //     new Vector3(0, 1, 0),// 环绕的轴
        //     0.2f * rotateSpeed);// 环绕速度

        #region 自身本地的方向向量
        // transform.forward; // 自身前方的方向向量(后方使用前面加-负号)
        // transform.up; // 自身上方的方向向量
        // transform.right; // 自身右方的方向向量
        // 让对象朝自己局部坐标系的上方移动
        // transform.position += transform.up * 0.02f;
        #endregion
        
        // 让当前对象看向某个目标(红色球)
        transform.LookAt(redBall.transform.position);
    }
}